package com.luobr.backend.api.aliyunai.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class GetImageSynthesisTaskResponse {

    // 请求唯一标识
    private String requestId;

    // 输出信息
    private Output output;

    @Data
    public static class Output {

        // 任务 ID
        private String taskId;

        /**
         * 任务状态
         * PENDING：排队中
         * RUNNING：处理中
         * USPENDED：挂起
         * SUCCEEDED：执行成功
         * FAILED：执行失败
         * UNKNOWN：任务不存在或状态未知
         */
        private String taskStatus;

        // 提交时间，格式：YYYY-MM-DD HH:mm:ss.SSS
        private String submitTime;

        // 调度时间，格式：YYYY-MM-DD HH:mm:ss.SSS
        private String scheduledTime;

        // 结束时间，格式：YYYY-MM-DD HH:mm:ss.SSS
        private String endTime;

        // 输出图像结果
        private List<Result> results;

        // 接口错误码 (接口成功请求不会返回该参数)
        private String code;

        // 接口错误信息 (接口成功请求不会返回该参数)
        private String message;

        // 任务指标信息
        private TaskMetrics taskMetrics;

        // 输出信息统计
        private Usage usage;
    }

    // 任务结果列表，包括图像URL、部分任务执行失败报错信息等
    @Data
    public static class Result {

        // 图片地址
        private String url;

        // 请求失败的错误码（部分图片生成失败，才有该信息）
        private String code;

        // 请求失败的详细信息（部分图片生成失败，才有该信息）
        private String message;
    }


    // 表示任务的统计信息
    @Data
    public static class TaskMetrics {

        // 总任务数
        private Integer total;

        // 成功任务数
        private Integer succeeded;

        // 失败任务数
        private Integer failed;
    }

    // 输出信息统计。只对成功的结果计数
    @Data
    public static class Usage {

        // 模型生成图片的数量
        private Integer imageCount;
    }
}